// 图片资源收集和生成脚本
const fs = require('fs');
const path = require('path');

console.log('🖼️  开始收集所有需要的图片资源...\n');

// 读取所有JS文件
const jsFiles = [
    'js/extendedStory.js',
    'js/gameEngine.js', 
    'js/endingsManager.js',
    'js/imagePreloader.js',
    'js/main.js',
    'js/megaStoryExpansion.js'
];

const imageSet = new Set();

jsFiles.forEach(file => {
    if (fs.existsSync(file)) {
        const content = fs.readFileSync(file, 'utf8');
        // 提取所有jpg图片引用
        const matches = content.match(/images\/[^"']+\.jpg/g);
        if (matches) {
            matches.forEach(match => imageSet.add(match));
        }
    }
});

// 转换为数组并排序
const allImages = Array.from(imageSet).sort();

console.log(`📊 找到 ${allImages.length} 个不同的图片引用:`);
allImages.forEach((img, index) => {
    console.log(`   ${index + 1}. ${img}`);
});

// 检查哪些图片存在
const existingImages = [];
const missingImages = [];

allImages.forEach(img => {
    if (fs.existsSync(img)) {
        existingImages.push(img);
    } else {
        missingImages.push(img);
    }
});

console.log(`\n✅ 已存在的图片 (${existingImages.length}个):`);
existingImages.forEach(img => console.log(`   ✓ ${img}`));

console.log(`\n❌ 缺失的图片 (${missingImages.length}个):`);
missingImages.forEach(img => console.log(`   ✗ ${img}`));

// 为缺失的图片生成占位符SVG
console.log(`\n🎨 开始生成缺失图片的占位符...`);

// 图片分类和描述
const imageDescriptions = {
    // 第1章场景
    'images/lab_night.jpg': '深夜实验室',
    'images/data_screen.jpg': '数据屏幕',
    'images/blue_glow.jpg': '蓝色光芒',
    'images/emergency_shutdown.jpg': '紧急关闭',
    'images/first_contact.jpg': '第一次接触',
    'images/communication.jpg': '无声对话',
    'images/scientific_discovery.jpg': '科学发现',
    'images/portal_opened.jpg': '时空门户',
    'images/data_archive.jpg': '数据存档',
    'images/energy_fusion.jpg': '能量融合',
    'images/mind_communication.jpg': '心灵沟通',
    'images/careful_observation.jpg': '谨慎观察',
    'images/security_team.jpg': '安全团队',
    'images/power_disconnect.jpg': '电源断开',
    'images/emergency_evacuation.jpg': '紧急疏散',
    'images/memory_dive.jpg': '记忆深潜',
    'images/consciousness_network.jpg': '意识网络',
    'images/enhanced_perception.jpg': '增强感知',
    'images/ancient_civilization.jpg': '古文明',
    'images/emotional_connection.jpg': '情感连接',
    'images/cosmic_mission.jpg': '宇宙使命',
    
    // 第2章场景
    'images/morning_lab.jpg': '早晨实验室',
    'images/sarah_discussion.jpg': 'Sarah讨论',
    'images/time_agent.jpg': '时间特工',
    'images/transformed_device.jpg': '变异设备',
    'images/silent_observation.jpg': '静默观察',
    'images/theory_sharing.jpg': '理论分享',
    'images/agent_revelation.jpg': '特工揭秘',
    'images/data_breakthrough.jpg': '数据突破',
    'images/secret_burden.jpg': '秘密负担',
    'images/badge_verification.jpg': '身份验证',
    'images/time_mission.jpg': '时间任务',
    'images/active_cooperation.jpg': '积极合作',
    'images/protective_instinct.jpg': '保护本能',
    'images/star_map_secret.jpg': '星图秘密',
    'images/cautious_observation.jpg': '谨慎观察',
    'images/dangerous_test.jpg': '危险测试',
    'images/collective_decision.jpg': '集体决定',
    'images/professional_analysis.jpg': '专业分析',
    'images/sarah_awakening.jpg': 'Sarah觉醒',
    'images/weight_of_choice.jpg': '选择重量',
    'images/leadership_moment.jpg': '领导时刻',
    
    // 第3章场景
    'images/multiverse_portal.jpg': '多元宇宙门户',
    'images/tech_world.jpg': '科技世界',
    'images/magic_world.jpg': '魔法世界',
    'images/utopia_world.jpg': '乌托邦世界',
    'images/guardian_duty.jpg': '守护职责',
    'images/return_home.jpg': '归乡之路',
    
    // 第4章场景
    'images/cosmic_choice.jpg': '宇宙选择',
    'images/guardian_oath.jpg': '守护誓言',
    'images/independent_path.jpg': '独立道路',
    'images/wise_contemplation.jpg': '智者沉思',
    'images/shared_mission.jpg': '共享使命',
    
    // 第5章场景
    'images/eternal_echo.jpg': '永恒回音',
    'images/endless_exploration.jpg': '无尽探索',
    'images/ordinary_wisdom.jpg': '平凡智慧',
    'images/eternal_protection.jpg': '永恒守护',
    'images/truth_seeker.jpg': '真理追寻',
    'images/reality_creator.jpg': '现实创造',
    
    // 结局图片
    'images/time_fusion.jpg': '时空融合',
    'images/observer_effect.jpg': '观察者效应',
    'images/team_safety.jpg': '团队安全',
    'images/parallel_world.jpg': '平行世界',
    'images/cosmic_guardian.jpg': '宇宙守护者',
    'images/unity_worlds.jpg': '世界统一',
    'images/time_equations.jpg': '时间方程',
    'images/reality_code.jpg': '现实代码',
    'images/cosmic_breakthrough.jpg': '宇宙突破',
    'images/cosmic_mind.jpg': '宇宙心智',
    'images/dimension_walk.jpg': '维度行走',
    'images/enlightenment.jpg': '启发觉悟',
    'images/world_shield.jpg': '世界护盾',
    'images/multiverse_shield.jpg': '多元宇宙护盾',
    'images/time_paradox.jpg': '时间悖论',
    'images/reality_collapse.jpg': '现实崩坏',
    'images/love_dimensions.jpg': '爱的维度',
    'images/ai_love.jpg': 'AI之爱',
    'images/data_anomaly.jpg': '数据异常'
};

// 生成SVG占位符的函数
function generatePlaceholderSVG(imagePath, description) {
    const fileName = path.basename(imagePath, '.jpg');
    
    // 根据场景类型选择颜色主题
    let bgColor = '#1a1f2e';
    let accentColor = '#00d4ff';
    let textColor = '#ffffff';
    
    if (fileName.includes('lab') || fileName.includes('data')) {
        bgColor = '#0f1419';
        accentColor = '#4ecdc4';
    } else if (fileName.includes('portal') || fileName.includes('cosmic')) {
        bgColor = '#1a0f2e';
        accentColor = '#ff6b6b';
    } else if (fileName.includes('safety') || fileName.includes('team')) {
        bgColor = '#2e1a0f';
        accentColor = '#ffa500';
    }
    
    return `<?xml version="1.0" encoding="UTF-8"?>
<svg width="800" height="600" xmlns="http://www.w3.org/2000/svg">
    <defs>
        <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
            <stop offset="0%" style="stop-color:${bgColor};stop-opacity:1" />
            <stop offset="100%" style="stop-color:${bgColor}dd;stop-opacity:1" />
        </linearGradient>
        <linearGradient id="accent" x1="0%" y1="0%" x2="100%" y2="0%">
            <stop offset="0%" style="stop-color:${accentColor};stop-opacity:0.8" />
            <stop offset="100%" style="stop-color:${accentColor};stop-opacity:0.3" />
        </linearGradient>
    </defs>
    
    <!-- 背景 -->
    <rect width="100%" height="100%" fill="url(#bg)"/>
    
    <!-- 装饰边框 -->
    <rect x="20" y="20" width="760" height="560" fill="none" stroke="url(#accent)" stroke-width="2" rx="10"/>
    
    <!-- 中央图标 -->
    <circle cx="400" cy="250" r="60" fill="none" stroke="${accentColor}" stroke-width="3" opacity="0.6"/>
    <circle cx="400" cy="250" r="40" fill="none" stroke="${accentColor}" stroke-width="2" opacity="0.4"/>
    <circle cx="400" cy="250" r="20" fill="${accentColor}" opacity="0.3"/>
    
    <!-- 标题 -->
    <text x="400" y="350" text-anchor="middle" fill="${textColor}" font-family="'Microsoft YaHei', sans-serif" font-size="24" font-weight="bold">
        ${description}
    </text>
    
    <!-- 副标题 -->
    <text x="400" y="380" text-anchor="middle" fill="${textColor}" font-family="'Microsoft YaHei', sans-serif" font-size="16" opacity="0.7">
        ${fileName}
    </text>
    
    <!-- 底部标识 -->
    <text x="400" y="550" text-anchor="middle" fill="${accentColor}" font-family="Arial, sans-serif" font-size="14" opacity="0.5">
        Time Echo - 时空回音
    </text>
</svg>`;
}

let generatedCount = 0;

missingImages.forEach(imagePath => {
    const description = imageDescriptions[imagePath] || '场景图片';
    const svgContent = generatePlaceholderSVG(imagePath, description);
    
    // 将.jpg替换为.svg并保存
    const svgPath = imagePath.replace('.jpg', '.svg');
    
    try {
        fs.writeFileSync(svgPath, svgContent, 'utf8');
        console.log(`   ✓ 生成: ${svgPath} (${description})`);
        generatedCount++;
    } catch (error) {
        console.error(`   ✗ 生成失败: ${svgPath} - ${error.message}`);
    }
});

console.log(`\n🎉 完成！生成了 ${generatedCount} 个占位符图片`);
console.log(`📈 图片资源完整度: ${existingImages.length}/${allImages.length} 存在, ${generatedCount} 个新生成`);

// 输出更新建议
console.log(`\n💡 建议：`);
console.log(`   1. 所有图片现在都有占位符，游戏可以正常运行`);
console.log(`   2. 占位符使用SVG格式，加载速度快且支持缩放`);
console.log(`   3. 后续可以用实际的游戏截图或设计图替换占位符`);
console.log(`   4. 需要更新JS文件中的图片路径从.jpg改为.svg`);